package com.sunwayhorizo.health.business.clinic.mqa;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.ResultsDTO;
import com.sunwayhorizo.health.business.dto.clinic.mqa.DefectInfoDTO;
import com.sunwayhorizo.health.hl7.common.Hl7Exception;

@Local
public interface QADefectManagerLocal
{
    /**
     * 新建缺陷信息
     * @param defectInfoDTO 缺陷信息DTO
     * @return              若成功返回提示信息，标志为True，以及实体生成的ID
     * @throws Hl7Exception
     */
    public ResultsDTO newDefectInfo(DefectInfoDTO defectInfoDTO) throws Hl7Exception; 
    
    /**
     * 删除缺陷消息，这里只做删除一条记录的处理
     * @param defectInfoIds 缺陷信息的动作Id
     * @return              
     * @throws Hl7Exception
     */
    @SuppressWarnings("rawtypes")
    public ResultsDTO delDefectInfo(List defectInfoIds) throws Hl7Exception;
    
    /**
     * 更新缺陷消息
     * @param defectInfoDTO 
     * @return
     * @throws Hl7Exception
     */
    public ResultsDTO updateDefectInfo(DefectInfoDTO defectInfoDTO) throws Hl7Exception;

    /**
     * 根据临床医生的角色Id，查询缺陷信息的列表
     * @param clinicDoctorRoleId    临床医生的角色Id
     * @return                      缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListByClinicDoctorRoleId(String clinicDoctorRoleId) throws Hl7Exception;

    /**
     * 根据临床医生的角色Id，查询带分页的缺陷信息列表
     * @param clinicDoctorRoleId    临床医生的角色Id
     * @param pageNo                页码
     * @param pageSize              一页的条数
     * @return                      缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListByClinicDoctorRoleId(String clinicDoctorRoleId, int pageNo, int pageSize) throws Hl7Exception;

    /**
     * 根据临床医生工作组的角色Id，查询缺陷信息的列表
     * @param clinicWorkGroupRoleId    临床医生工作组的角色Id
     * @return                         缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListByClinicWorkGroupRoleId(String clinicWorkGroupRoleId) throws Hl7Exception;

    /**
     * 根据临床医生工作组的角色Id，查询带分页的缺陷信息列表
     * @param clinicWorkGroupRoleId    临床医生工作组的角色Id
     * @param pageNo                页码
     * @param pageSize              一页的条数
     * @return                      缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListByClinicWorkGroupRoleId(String clinicWorkGroupRoleId, int pageNo, int pageSize) throws Hl7Exception;

    /**
     * 根据质控医生的角色Id，查询缺陷信息的列表
     * @param mqaDoctorRoleId    质控医生的角色Id
     * @return                      缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListByMqaDoctorRoleId(String mqaDoctorRoleId) throws Hl7Exception;

    /**
     * 根据质控医生的角色Id，查询带分页的缺陷信息列表
     * @param mqaDoctorRoleId    质控医生的角色Id
     * @param pageNo                页码
     * @param pageSize              一页的条数
     * @return                      缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListByMqaDoctorRoleId(String mqaDoctorRoleId, int pageNo, int pageSize) throws Hl7Exception;

    /**
     * 根据患者的角色Id，查询缺陷信息的列表
     * @param patientRoleId    患者的角色Id
     * @return                      缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListByPatientRoleId(String patientRoleId) throws Hl7Exception;

    /**
     * 根据患者的角色Id，查询带分页的缺陷信息列表
     * @param patientRoleId         患者的角色Id
     * @param pageNo                页码
     * @param pageSize              一页的条数
     * @return                      缺陷信息列表
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoListBypatientRoleId(String patientRoleId, int pageNo, int pageSize) throws Hl7Exception;
    
    /**
     * 根据临床医生的角色Id，查询缺陷信息
     * @param clinicDoctorRoleId    临床医生的角色Id
     * @return                      缺陷信息
     * @throws Hl7Exception
     */
    public DefectInfoDTO findDefectInfoByClinicDoctorRoleId(String clinicDoctorRoleId) throws Hl7Exception;

    /**
     * 根据临床医生工作组的角色Id，查询缺陷信息
     * @param clinicWorkGroupRoleId    临床医生工作组的角色Id
     * @return                          缺陷信息
     * @throws Hl7Exception
     */
    public DefectInfoDTO findDefectInfoByClinicWorkGroupRoleId(String clinicWorkGroupRoleId) throws Hl7Exception;

    /**
     * 根据质控医生的角色Id，查询缺陷信息
     * @param mqaDoctorRoleId    质控医生的角色Id
     * @return                      缺陷信息
     * @throws Hl7Exception
     */
    public DefectInfoDTO findDefectInfoByMqaDoctorRoleId(String mqaDoctorRoleId) throws Hl7Exception;

    /**
     * 根据患者角色Id，查询缺陷信息
     * @param patientRoleId         患者角色Id
     * @return                      缺陷信息
     * @throws Hl7Exception
     */
    public DefectInfoDTO findDefectInfoByPatientRoleId(String patientRoleId) throws Hl7Exception;

    /**
     * 根据动作Id，查询缺陷信息  
     * @param defectInfoId          动作Id
     * @return                      缺陷信息
     * @throws Hl7Exception
     */
    public ResultsDTO findDefectInfoDetailById(String defectInfoId) throws Hl7Exception;
}
